<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 *
 * Enter description here ...
 * @author Douglas Rafael
 *
 */
class Principal extends CI_Controller {

    public function __construct() {
        parent::__construct();
        session_start();

        //Pegando os dados da tabela CONFIG
        $config = $this->_configGeral();
        $this->logomarca = $config->logomarca;
        $this->css = array('reset',$config->tema);
        $this->content_informations = '<p>Olá<span class="n"><a href="" >Douglas Rafael</a></span>, seja bem vindo!</p>
            <p><b>Último Login em: </b>13/05/2012 - 00:61</p>
            <p><b>Total de itens que cadastrou: </b><a href="">99999</a></p>
            <p><b>Total de itens que emprestou: </b>99999</p>';
    }

    /**
     * Layout default utilizado pelo controlador.
     */
    public $layout = 'default';

    /**
     * Titulo default.
     */
    public $title = 'Sisbion - Sistema Bibliotecário Online';

    /**
     * Titulo default.
     */
    public $logomarca = '';

    /**
     * Titulo default.
     */
    public $footer = "F@el'Santos. Todos direitos reservados.";

    /**
     * Titulo Página default.
     */
    public $title_page = "Página Inicial";

    /**
     * Mensagem
     */
    public $message_geral = '<style>#messsage{display:none;}</style>';

    /**
     * Mensagem
     */
    public $alert = '<style>#alert{display:none;}</style>';

    /**
     * Definindo os css default.
     */
    public $css = '';
    
    /**
     * Definindo os js default.
     */
    public $js = array('jquery-1.7.1.min', 'jquery-ui-1.8.20.custom.min', 'jquery.tools.min', 'maskedinput', 'jquery.alphanumeric.pack');

    // Metodoo index
    function index() {
        $this->_verificaLogado();
        $this->load->view('inicio');
    }

    /**
     * Carrega o template com o conteúdo da view vindo do Controller.
     * @param string $view Nome da view a ser carregada
     * @param Object $data Consultas do banco de dados
     * @param array $messages Array contendo mensagem de erro, sucesso e geral
     * @param array $params Array contendo nomes de css, js, título, titulo da página...
     */
    public function _loadTemplate($view, $data, array $messages, $params) {


        //Verifica se o título foi passado como parametro no Controller, caso contrário o valor default é usado.
        isset($params['title']) ? $this->title = $params['title'] . ' || ' . $config['nome'] : $this->title .= ' || ' . $config['nome'];

        //Verifica se o título da página foi passado como parametro no Controller, caso contrário o valor default é usado.
        isset($params['title_pagina']) ? $this->title_page = $params['title_pagina'] : '';

        //Verifica se o css foi passado como parametro no Controller, caso contrário o valor default é usado.
        isset($params['css']) ? $this->css = $params['css'] : '';

        //Verifica se o js foi passado como parametro no Controller, caso contrário o valor default é usado.
        isset($params['js']) ? $this->js = $params['js'] : '';

        // verifica se o array com a logomarca existe
        //isset ($config['logomarca']) ? $this->logomarca = $config['logomarca'] : '';
        // Verifica se foi passado pelo Controller alguma mensagem, caso contrário o valor defalt é usado.
        isset($messages['geral']) ? $this->message_geral = $messages['geral'] : '';

        // Verifica se foi passado pelo Controller alguma mensagem, caso contrário o valor defalt é usado.
        isset($messages['alert']) ? $this->alert = $messages['alert'] : '';

        // Carregando a View
        $this->load->view($view, $data);
    }

//    /**
//     * Monta um array com os nomes das <b>folhas de estilo</b> passada pelo Controller.
//     * @param type $params
//     * @return array
//     */
//    private function _preparaCSS($params) {
//        if (is_array($params)) {
//            $css = array();
//            foreach ($params['css'] as $value) {
//                array_push($css, $value);
//            }
//            return $css;
//        }
//    }
//
//    /**
//     * Monta um array com os nomes dos <b>java scripts</b> passado pelo Controller.
//     * @param type $params
//     * @return array
//     */
//    private function _preparaJS($params) {
//        if (is_array($params)) {
//            $js = array();
//            foreach ($params['js'] as $value) {
//                array_push($js, $value);
//            }
//            return $js;
//        }
//    }

    /**
     * 
     */
    public function _configGeral() {
        $this->load->model('DAOConfig');
        return $this->DAOConfig->get_all();
    }

    /**
     * Verifica se um usuário se encontra logado no sistema.
     * Caso não esteja direciona para a tela de login.
     */
    public function _verificaLogado() {
        if (!$this->ControleAcesso->estaLogado()) {
            redirect("login");
        }
    }

    /**
     * Verifica a permissão do usuário de executar uma ação.
     * Em caso de falta de permissão direciona para uma tela padrão.
     */
    public function _verificaPermissao($idAcao) {
        if (!$this->ControleAcesso->temPermissao($idAcao)) {
            redirect("principal/show_falta_permissao");
        }
    }

    /**
     * Exibe a tela inicial do sistema com uma mensagem
     * de erro relativa à permissão do usuário.
     */
    function show_falta_permissao() {
        $this->_show_erro("Você não tem permissão para executar esssa ação! <br /><b><a href='javascript:history.back(1)'>Voltar</a></b>");
    }
    
    
   /**
     * Exibe a janela padrão do sistema com a mensagem de erro
     * passada como parâmetro.
     *
     * @param $mensagem
     */
    protected function _show_erro($mensagem = NULL) {
        Mensagem::setMensagemErro($mensagem);
        $this->load->view("utils/message_view");
    }
    
    /**
     * Desloga o usuário do sistema 
     */
    public function logout(){
        $this->ControleAcesso->deslogaUsuario();
        redirect('');
    }

}